#include "TcpServer.hpp"
#include "Command.hpp"
#include <memory>

int main(int argc, char *argv[])
{
    if (argc != 2)
    {
        cout << "[ERROR]: parameter miss" << endl;
        exit(1);
    }

    uint16_t port = std::stoi(argv[1]);
    Command cmdservice;
    // std::unique_ptr<TcpServer> tsvr = std::make_unique<TcpServer>(
    //     std::bind(&Command::HandlerCommand,
    //               &cmdservice, std::placeholders::_1,
    //               std::placeholders::_2),
    //     port);
    std::unique_ptr<TcpServer> tsvr = std::make_unique<TcpServer>(
        [&cmdservice](int sockfd, InetAddr addr)
        {
            cmdservice.HandlerCommand(sockfd, addr);
        },
        port);

    tsvr->InitServer();
    tsvr->Loop();
    return 0;
}